package com.xiaoge;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanInitializationException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;


/**
 * TODO
 *
 * @author <a href="mailto:1330137071@qq.com">Zhang Xiao</a>
 * @since
 */
@SpringBootApplication
//public class ZhangXiaoApplication implements CommandLineRunner {
public class ZhangXiaoApplication {

//	@Autowired
//	private ApplicationContext context;

	public static void main(String[] args) {
		SpringApplication.run(ZhangXiaoApplication.class, args);
//		ConfigurableApplicationContext applicationContext = SpringApplication.run(ZhangXiaoApplication.class, args);
//		System.out.println(applicationContext.getBean(UserService.class));
	}

//	/**
//   * todo springboot启动必须满足调用接口成功, springboot才会启动成功
//	 * Callback used to run the bean.
//	 *
//	 * @param args incoming main method arguments
//	 * @throws Exception on error
//	 */
//	@Override
//	public void run(String... args) throws Exception {
//		RestTemplate restTemplate = new RestTemplate();
//		String apiUrl = "https://api.example.com/health";
//
//		try {
//			// 调用接口并检查响应
//			String response = restTemplate.getForObject(apiUrl, String.class);
//
//			// 自定义成功条件（例如包含特定字符串）
//			if (!response.contains("OK")) {
//				throw new RuntimeException("接口返回状态异常");
//			}
//
//			System.out.println("✅ 接口检查通过，应用正常启动");
//		} catch (Exception e) {
//			System.err.println("❌ 接口调用失败: " + e.getMessage());
//
//			// 优雅关闭应用
//			int exitCode = SpringApplication.exit(context, () -> 1);
//			System.exit(exitCode);
//		}
//	}

//	/**
//	 * todo springboot启动必须满足调用接口成功, springboot才会启动成功
//	 * @param context
//	 * @return
//	 */
//	@Bean
//	public ApplicationRunner interfaceChecker(ApplicationContext context) {
//		return (ApplicationArguments args) -> {
//			RestTemplate restTemplate = new RestTemplate();
//			String apiUrl = "https://api.example.com/health";
//
//			try {
//				// 调用接口并检查响应
//				String response = restTemplate.getForObject(apiUrl, String.class);
//
//				// 自定义成功条件（例如包含特定字符串）
//				if (!response.contains("OK")) {
//					throw new RuntimeException("接口返回状态异常");
//				}
//
//				System.out.println("✅ 接口检查通过，应用正常启动");
//			} catch (Exception e) {
//				System.err.println("❌ 接口调用失败: " + e.getMessage());
//
//				// 优雅关闭应用
//				int exitCode = SpringApplication.exit(context, () -> 1);
//				System.exit(exitCode);
//			}
//		};
//	}

//	/**
//	 * todo springboot启动必须满足调用接口成功, springboot才会启动成功
//	 * @param context
//	 * @return
//	 */
//	@Bean
//	public CommandLineRunner interfaceChecker(ApplicationContext context) {
//		return (String... args) -> {
//			RestTemplate restTemplate = new RestTemplate();
//			String apiUrl = "https://api.example.com/health";
//
//			try {
//				// 调用接口并检查响应
//				String response = restTemplate.getForObject(apiUrl, String.class);
//
//				// 自定义成功条件（例如包含特定字符串）
//				if (!response.contains("OK")) {
//					throw new RuntimeException("接口返回状态异常");
//				}
//
//				System.out.println("✅ 接口检查通过，应用正常启动");
//			} catch (Exception e) {
//				System.err.println("❌ 接口调用失败: " + e.getMessage());
//
//				// 优雅关闭应用
//				int exitCode = SpringApplication.exit(context, () -> 1);
//				System.exit(exitCode);
//			}
//		};
//	}
}
